package com.ktgj.customer.service;

import java.util.List;
import com.ktgj.customer.domain.Employee;
import com.ktgj.customer.domain.EmployeeVipresource;
import com.ktgj.customer.domain.dto.CustomerInfoDTO;
import com.ktgj.customer.domain.vo.CustomerCardGroupVO;
import com.ktgj.customer.domain.vo.CustomerResource;
import com.ktgj.customer.domain.vo.SaveDistributeVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestBody;

import javax.servlet.http.HttpServletRequest;

/**
 * 员工Service接口
 * 
 * @author ruoyi
 * @date 2021-07-27
 */
public interface IEmployeeService 
{
    /**
     * 查询员工
     * 
     * @param employeeId 员工ID
     * @return 员工
     */
    public Employee selectEmployeeById(Long employeeId);

    /**
     * 查询员工列表
     * 
     * @param employee 员工
     * @return 员工集合
     */
    public List<Employee> selectEmployeeList(Employee employee);

    /**
     * 新增员工
     * 
     * @param employeeList 员工
     * @return 结果
     */
    public int insertEmployee(List<Employee> employeeList) throws Exception;

    /**
     * 修改员工
     * 
     * @param employeeList 员工集合
     * @return 结果
     */
    public int updateEmployee(List<Employee> employeeList) throws Exception;

    /**
     * 批量删除员工
     * 
     * @param employeeIds 需要删除的员工ID
     * @return 结果
     */
    public int deleteEmployeeByIds(Long[] employeeIds);

    /**
     * 删除员工信息
     * 
     * @param employeeId 员工ID
     * @return 结果
     */
    public int deleteEmployeeById(Long employeeId);


    /**
     * 重置员工密码
     * @param employeeId 员工ID
     * @return
     */
    public boolean resetEmployeePassword(Long employeeId);

    int quit(Long employeeId);

    /**
     * 新增vip经理
     * */
    //public int addvipManager(Employee employee);

    /**
     * 转移
     * */
    //public int updateEmployeeVipresource(EmployeeVipresource employeeVipresource);

    /**
     * 分配
     * */
    //public int distribute(Long employeeId);

    /**
     * 查询一个员工关联着几个会员
     * @param employee
     * @return
     */
    public List<Employee> selectEmployeeVipList(Employee employee);
    /**
     * 查询VIP经理手下的会员明细
     * */
    //public List<EmployeeVipresource> selectEmployeeVipresourceList(Long employeeId);
    /**
     * 查询员工列表（是VIP经理且在职）
     */
    public List<Employee> selectEmployeeVip(Long deptId);

    //public boolean distributeCustomerInfo(Long employeeId, List<CustomerCardGroupVO> lstCustomerInfo);

    /**
     * 员工姓名获取id
     * */
    public List<Long> employeeIdList(String name);

    /**
     * 员工id获取姓名
     * */
    public Employee employeeNameList(Long id);

    /**
     * 获取指定部门的所有员工
     * */
    public List<Long> employeeVipIdList(Long deptId);


    /**
     * 根据员工ID列表获取员工信息
     * @param lstIds
     * @return
     */
    List<Employee> getEmployeeListByIds(List<Long> lstIds);

    /**
     * 保存vip经理分配信息
     */
    boolean saveDistribute(Employee employee, SaveDistributeVo saveDistributeVo);

    /**
     * 获取当前在线员工列表
     * @return
     */
    List<Employee> getOnlineEmployeeList();

    boolean changeVipresource(Long sourceId, Long targetId, Long customerId);

    List<CustomerInfoDTO> getCustomerResource(CustomerResource customerResource);

    boolean distributeCustomer(Employee employee, List<CustomerInfoDTO> lstCustomer);
}
